/*
 * @Description: 可选参数和默认参数
 * @Autor: HuiSir<273250950@qq.com>
 * @Date: 2021-05-06 16:34:31
 * @LastEditTime: 2021-05-06 17:44:00
 */
(function () {

    /**
     * 定义一个函数，参数为姓氏和名字，均为可选参数
     * 如果未传参，则返回默认的姓氏
     * 如果只传了姓氏，则返回姓氏
     * 如果两个参数都传了，则返回`姓氏-名字`
     */

    /**
     * 在形参后加`?`号表示可选参数,可选参数代表可传可不传(或传undefined)
     * 可选参数必须跟在必要参数后面
     * 在形参后给`=`赋值，为默认参数（同ES6）
     * 若前面的可选参数不传，只传后面的可选参数，那么必须要传undefined
     * 若给定默认参数，则不能够在加`?`号，即可选和默认不能同时使用
     * 默认也代表可选
     */

    /**
     * @description: 获取姓名
     * @param {string?} firstName
     * @param {string?} lastName
     * @return {*}
     */
    function getFullName(firstName: string = "令狐", lastName?: string): string {
        return lastName ? `${firstName}-${lastName}` : firstName
    }

    /**
     * 测试
     */
    console.log(getFullName()) // 令狐
    console.log(getFullName(undefined, "冲")) // 令狐-冲
    console.log(getFullName("诸葛", "亮")) // 诸葛-亮
    // console.log(getFullName(null,"冲")) // 报错：null不是undefined
})()
